﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Globalization;
using System.Configuration;
using System.Data;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;

public partial class Admin_VerificarNit : System.Web.UI.Page
{
    public string StrProId
    {
        get
        {
            if (ViewState["StrProId"] != null)
                return ViewState["StrProId"].ToString();
            return "";
        }
        set { ViewState["StrProId"] = value; }
    }
    public string StrProIdProponente
    {
        get
        {
            if (ViewState["StrProIdProponente"] != null)
                return ViewState["StrProIdProponente"].ToString();
            return "";
        }
        set { ViewState["StrProIdProponente"] = value; }
    }
    private DataTable ProyectosProponentesDataTableCache
    {
        get
        {
            DataTable objTable = null;
            if (Cache["ProyectosProponentesDataTableCache" + Session.SessionID] != null)
                objTable = (DataTable)Cache["ProyectosProponentesDataTableCache" + Session.SessionID];
            return objTable;
        }
        set
        {
            if (value != null)
            {
                Cache.Insert("ProyectosProponentesDataTableCache" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
            }
        }
    }

    public string StrUsuCorreoElectronico
    {
        get
        {
            if (ViewState["StrUsuCorreoElectronico"] != null)
                return ViewState["StrUsuCorreoElectronico"].ToString();
            return "";
        }
        set { ViewState["StrUsuCorreoElectronico"] = value; }
    }
    public string StrUsuNit
    {
        get
        {
            if (ViewState["StrUsuNit"] != null)
                return ViewState["StrUsuNit"].ToString();
            return "";
        }
        set { ViewState["StrUsuNit"] = value; }
    }
    public string StrUsuId
    {
        get
        {
            if (ViewState["StrUsuId"] != null)
                return ViewState["StrUsuId"].ToString();
            return "";
        }
        set { ViewState["StrUsuId"] = value; }
    }


    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        TraerContextItems();
        if (!IsPostBack)
        {
            
            if (Session["USU_USUARIO"] == null)
            {
                Response.Redirect("../login.aspx");
                return;
            }

            ProyectosProponentesDataTableCache = null;
            BindDatosProyectos();
        }
        else
        {
            if (ProyectosProponentesDataTableCache != null)
            {
                ASPxGridViewListadoProyectos.DataSource = ProyectosProponentesDataTableCache;
                ASPxGridViewListadoProyectos.DataBind();
            }
        }
    } 
    #endregion

    #region crearContextItems
    private void crearContextItems()
    {
        try
        {
            Context.Items["StrProIdProponente"] = StrProIdProponente;
            Context.Items["StrProId"] = StrProId;
            Context.Items["_StrUsuCorreoElectronico"] = StrUsuCorreoElectronico;
            Context.Items["StrUsuNit"] = StrUsuNit;
            Context.Items["StrUsuId"] = StrUsuId;
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    } 
    #endregion

    #region TraerContextItems

    private void TraerContextItems()
    {
        if (Context != null)
        {
            if (Context.Items["_StrUsuCorreoElectronico"] != null)
                StrUsuCorreoElectronico = Context.Items["_StrUsuCorreoElectronico"].ToString();
            if (Context.Items["StrUsuNit"] != null)
                StrUsuNit = Context.Items["StrUsuNit"].ToString();
            if (Context.Items["StrUsuId"] != null)
                StrUsuId = Context.Items["StrUsuId"].ToString();
        }
    }

    #endregion

    #region BindDatosProyectos
    private void BindDatosProyectos()
    {
        try
        {

            string strAdministradores = ConfigurationManager.AppSettings["Administradores"].ToString();

            string[] strArregloAdministradores = strAdministradores.Split(',');
            

            foreach (string var in strArregloAdministradores)
            {
                // es administrador mostrar todos
                if (var == Session["USU_ID"].ToString())
                {
                    #region Filrta el grid con por usuario
                    //string strProNid = "0";
                    //if (!String.IsNullOrEmpty(Session["USU_NIT"].ToString()))
                        //strProNid = StrUsuNit;
                    //Consulta a la base de datos
                    DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
                    var datos = from a in contexto.APP_PROPONENTEs
                                join b in contexto.APP_PROYECTOs on a.PRO_ID equals b.PRO_ID_PROPONENTE
                                where  object.Equals(b.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString())
                                select new
                                {
                                    b.PRO_ID,
                                    b.PRO_NOMBRE,
                                    b.PRO_VALOR_PROYECTO,
                                    a.PRO_NIT,
                                    a.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL,
                                    PRO_ESTADO = contexto.FN_ESTADO_PROYECTO(b.PRO_ESTADO),
                                    b.PRO_NUMERO_RADICACION
                                }
                                ;


                    if (datos == null) return;
                    ASPxGridViewListadoProyectos.BeginUpdate();
                    ASPxGridViewListadoProyectos.DataSource = datos;// objProductosComercialesRendimientosData.DefaultView;
                    ASPxGridViewListadoProyectos.DataBind();
                    ASPxGridViewListadoProyectos.EndUpdate();
                    ProyectosProponentesDataTableCache = GetDataView(ASPxGridViewListadoProyectos);
                    #endregion
                    break;
                }
                else
                {
                    #region Filrta el grid con por usuario
                    //string strProNid = "0";
                    //if (!String.IsNullOrEmpty(Session["USU_NIT"].ToString()))
                    //    strProNid = Session["USU_NIT"].ToString();
                    //Consulta a la base de datos
                    DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
                    var datos = from a in contexto.APP_PROPONENTEs
                                join b in contexto.APP_PROYECTOs on a.PRO_ID equals b.PRO_ID_PROPONENTE
                                where object.Equals(a.PRO_NIT, Session["USU_NIT"].ToString()) && object.Equals(b.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString())
                                select new
                                {
                                    b.PRO_ID,
                                    b.PRO_NOMBRE,
                                    b.PRO_VALOR_PROYECTO,
                                    a.PRO_NIT,
                                    a.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL,
                                    PRO_ESTADO = contexto.FN_ESTADO_PROYECTO( b.PRO_ESTADO),
                                    b.PRO_NUMERO_RADICACION
                                }
                                ;


                    if (datos == null) return;
                    ASPxGridViewListadoProyectos.BeginUpdate();
                    ASPxGridViewListadoProyectos.DataSource = datos;// objProductosComercialesRendimientosData.DefaultView;
                    ASPxGridViewListadoProyectos.DataBind();
                    ASPxGridViewListadoProyectos.EndUpdate();
                    ProyectosProponentesDataTableCache = GetDataView(ASPxGridViewListadoProyectos);
                    #endregion
                    //break;
                }
            }

            

        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            //throw;
        }


    }
    #endregion

    #region GetDataView
    private DataTable GetDataView(ASPxGridView grid)
    {
        DataTable dt = new DataTable();
        foreach (GridViewColumn col in grid.VisibleColumns)
        {
            GridViewDataColumn dataColumn = col as GridViewDataColumn;
            if (dataColumn == null) continue;
            dt.Columns.Add(dataColumn.FieldName);
        }
        for (int i = 0; i < grid.VisibleRowCount; i++)
        {
            DataRow row = dt.Rows.Add();
            foreach (DataColumn col in dt.Columns)
                row[col.ColumnName] = grid.GetRowValues(i, col.ColumnName);
        }
        return dt;
    }
    #endregion

    protected void btnContinuar_Click(object sender, EventArgs e)
    {
        //LLEVA EL ID DEL PROPONENTE Y DEL PROYECTO
        crearContextItems();
        Server.Transfer("Default.aspx", true);
    }

    #region btnNuevo_Click
    protected void btnNuevo_Click(object sender, EventArgs e)
    {
        List<object> keyValues = ASPxGridViewListadoProyectos.GetSelectedFieldValues("PRO_ID");
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        try
        {

            foreach (object key in keyValues)
            {
                //Buscar si este registro tiene un papa
                StrProId = key.ToString();
            }


            var datosProponente = (from a in contexto.APP_PROPONENTEs
                                   where object.Equals(a.USU_ID, Session["USU_ID"].ToString())
                                   select new
                                   {
                                       ProponenteID = a.PRO_ID, //a proponentes
                                       a.PRO_NIT,
                                       a.USU_ID,
                                       a.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL
                                   }
                                  );

            //if (StrProId != "")
            foreach (var v in datosProponente)
            {
                //LLEVA EL ID DEL PROPONENTE
                StrProIdProponente = v.ProponenteID.ToString();
                StrUsuCorreoElectronico = v.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL;
                StrUsuNit= v.PRO_NIT;
            }
            crearContextItems();
            Server.Transfer("Default.aspx", true);
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }



    } 
    #endregion

    #region btnModificar_Click
    protected void btnModificar_Click(object sender, EventArgs e)
    {
        List<object> keyValues = ASPxGridViewListadoProyectos.GetSelectedFieldValues("PRO_ID");
        DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
        try
        {
            foreach (object key in keyValues)
            {
                //Buscar si este registro tiene un papa
                StrProId = key.ToString();
            }


            var datosProponente = (from a in contexto.APP_PROPONENTEs
                                   join b in contexto.APP_PROYECTOs on a.PRO_ID equals b.PRO_ID_PROPONENTE
                                   where object.Equals(b.PRO_ID , StrProId)
                                   select new
                                   {
                                       ProponenteID = a.PRO_ID, //a proponentes
                                       a.PRO_NIT,
                                       a.USU_ID,
                                       a.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL
                                   }
                                  );
            foreach (var v in datosProponente)
            {
                //LLEVA EL ID DEL PROPONENTE
                StrProIdProponente = v.ProponenteID.ToString();
                StrUsuId = v.USU_ID.ToString();
                StrUsuNit = v.PRO_NIT;
                StrUsuCorreoElectronico = v.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL;

            }
            crearContextItems();
            Server.Transfer("Default.aspx", true);
        }
        catch (Exception ex)
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
        }
    } 
    #endregion
}